package chapter07

/**
 * 创建数组
 * 在 Scala 中推荐不可变数组
 */
object Test01_ImmutableArray {
  def main(args: Array[String]): Unit = {
    //1、创建数组
    val arr: Array[Int] = new Array[Int](5)

    //另一种创建方式
    val arr2 = Array(12, 32, 23, 13, 16)

    //2、访问和修改元素
    println(arr(0))
    println(arr(1))
    println(arr(4))

    println("++++++++++++++++++++++++++++++++++")
    arr(0) = 12
    arr(4) = 57

    println(arr(0))
    println(arr(1))
    println(arr(4))


    //3、数组的遍历
    //3.1 普通的for循环 ->until 不包含
    for (i <- 0 until arr.length) {
      println(arr(i))
    }
    println("+++++++++++++++普通的for循环+++++++++++++++++++")
    for (i <- arr.indices) {
      println(arr(i))
    }

    //3.2直接便利所有元素、增强for循环
    println("+++++++++++++++增强for循环+++++++++++++++++++")
    for (elem <- arr2) {
      println(elem)
    }

    // 3) 迭代器
    println("+++++++++++++++迭代器+++++++++++++++++++")
    val iterator = arr2.iterator
    while (iterator.hasNext)
      println(iterator.next())

    println("+++++++++++++++调用foreach+++++++++++++++++++")
    //4、调用foreach 方法
    arr2.foreach((elem: Int) => {
      println(elem)
    })

    println("+++++++++++++++调用foreach2+++++++++++++++++++")
    arr2.foreach(println)

    //拼接字符串
    println(arr2.mkString("--"))

    println("--------------添加元素------------------------")
    //5、添加元素
    val newArray1 = arr2.:+(73) // .:+ 代表追加末尾
    println(arr2.mkString("--")) //因为不可变所以不会加进去

    println(newArray1.mkString("--")) //可以返回一个新数组展示

    val newArray2 = newArray1.+:(30) //.+: 代表追加前面
    println(newArray2.mkString("--"))


    val newArray3 = newArray2 :+ 30 //.+: 代表追加前面

    /**
     * TODO
     * 1、.:+ 代表追加末尾
     * 2、.+: 代表追加前面
     */
    val newArray4 = 19 +: 29 +: newArray3 :+ 26 :+ 73
    println(newArray4.mkString("--"))
  }
}
